Mainstream forces in the software engineering industry are driving software product family approaches to take a holistic perspective that is deeply integrated into the system and software engineering lifecycle. These forces demand that software product family engineering solutions focus not on just one stage in the product engineering lifecycle, nor that they focus on multiple, independent and disparate silos in different stages of the lifecycle. The demand from the mainstream is to ease the integration of tools, artifacts and processes across the full system and software product family engineering lifecycle. The goal is to provide product family engineers with a unified set of software product family concepts and constructs for all of their tools and artifacts, at every stage of the lifecycle, and to assure that product family development traceability and processes flow cleanly from one stage of the development lifecycle to another.
Patent pending application Ser. No. 10/106,154 is a software product family engineering method and system that focuses on software artifacts, such as source code modules, that are managed by developers as files and directories. In order for this approach to interoperate with other software development tools that don't present artifacts to the developer as files and directories—such as some requirements management tools, test management tools, model-driven development tools, and so forth—from multiple lifecycle stages, additional support is required. Although it is often possible to find ways of interoperating with these tools and the approach of patent application Ser. No. 10/106,154, for example using data exchange records and translation layers, the result often adds an additional level of indirection that reduces conceptual clarity, is inconvenient, and reduces the simplicity and benefits of the approach. A better approach is needed that extends the benefits of patent application Ser. No. 10/106,154 to support not only software artifacts as data files and directories, but also to uniformly support other types of software artifact model elements present in other software engineering tools across the full software product family engineering lifecycle.